home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / viewers / polyview / plyvw102.lha / PolyView1.02 / df.h < prev    next >
C/C++ Source or Header  |  1990-11-13  |  10KB  |  252 lines

  1. /*------------------------------------------------------------------------------
  2.  * File:     df.h
  3.  * Purpose:    header file for HDF routines
  4.  * Invokes:    dfi.h
  5.  * Contents: 
  6.  *    Structure definitions: DFddh, DFdd, DFdesc, DFdle, DF, DFdi, DFdata
  7.  *    Procedure type definitions
  8.  *    Global variables
  9.  *    Tag definitions
  10.  *  Error return codes
  11.  *    Logical constants
  12.  * Remarks: This file is included with user programs
  13.  *            Since it includes stdio.h etc., do not include these after df.h
  14.  *----------------------------------------------------------------------------*/
  15.  
  16.  
  17. #ifndef DFTAG_NULL                /* avoid re-inclusion */
  18.  
  19. /* include DF (internal) header information */
  20. #include "dfi.h"
  21.  
  22. /*--------------------------------------------------------------------------*/
  23. /*                        Type declarations                                     */
  24.  
  25. typedef struct DFddh {        /* format of data descriptor headers as in file */
  26.     int16
  27.         dds;                /* number of dds in header block */
  28.     int32    
  29.         next;                /* offset of next header block */
  30.     } DFddh;
  31.  
  32.         
  33. typedef struct DFdd {        /* format of data descriptors as in file */
  34.     uint16
  35.         tag,                /* data tag */
  36.         ref;                /* data reference number */
  37.     int32
  38.         offset,                /* offset of data element in file */
  39.         length;                /* number of bytes */
  40.     } DFdd;
  41.  
  42.  
  43.     /* descriptor structure is same as dd structure.  ###Note: may be changed */
  44. #define DFdesc    DFdd
  45.  
  46.  
  47.     /* DLE is the internal structure which stores data descriptor information */
  48.     /* It is a linked list of DDs */
  49. typedef struct DFdle {        /* Data List element */
  50.     struct DFdle
  51.         *next;                /* link to next dle */
  52.     DFddh
  53.         ddh;                /* To store headers */
  54.     DFdd
  55.         dd[1];                /* dummy size */
  56.     } DFdle;    
  57.  
  58.  
  59.     /* DF is the internal structure associated with each DF file */
  60.     /* It holds information associated with the file as a whole */
  61.     /* ### Note: there are hooks for having multiple DF files open at a time */
  62. typedef struct DF {
  63.     DFdle
  64.         *list,            /* Pointer to the DLE list */
  65.         *last_dle;        /* last_dle and last_dd are used in searches to indicate
  66.                             element returned by previous call to DFfind */
  67.     int
  68.         type,            /* 0= not in use, 1= normal, -1 = multiple */
  69.                         /* this is a hook for when multiple files are open */
  70.         access,            /* permitted access types: 0=none, 1=r, 2=w, 3=r/w */
  71.         changed,         /* True if anything in DDs modified since last write */
  72.         last_tag,        /* Last tag searched for by DFfind */
  73.         last_ref,        /* Last reference number searched for */
  74.         last_dd,        /* see last_dle */
  75.         defdds,            /* default numer of DD's in each block */
  76.         up_access;        /* access permissions to element being read/updated */
  77.                         /* Used by DFstart */
  78.     DFdd
  79.         *up_dd;            /* DD of element being read/updated, used by DFstart */
  80.               /* file handle is a file pointer or file descriptor */
  81.             /* depending on whether we use buffered or unbuffered i/o */
  82. #ifdef DF_BUFFIO
  83.     FILE *                /* file pointer */
  84. #else DF_BUFFIO
  85.     int                    /* file descriptor */
  86. #endif DF_BUFFIO
  87.         file;            /* File handle for real file */
  88. } DF;
  89.  
  90.  
  91. typedef struct DFdi {    /* data identifier: specifies data element uniquely */
  92.     uint16 tag;
  93.     uint16 ref;
  94. } DFdi;
  95.  
  96.  
  97.  
  98. typedef struct DFdata {    /* structure for returning status information */
  99.     int version;        /* version number of program */
  100. } DFdata;
  101.  
  102. /*--------------------------------------------------------------------------*/
  103. /*                            Procedure types                                 */
  104.  
  105. #ifndef VMS
  106. DF *DFopen();
  107. int32 DFgetelement(), DFread(), DFseek(), DFwrite();
  108. uint16 DFnewref();
  109. char *DFIgetspace(), *DFIfreespace(), *DFIf2cstring();
  110. #else VMS
  111.             /* for VMS need to prepend _ to avoid name conflict with Fortran */
  112. DF *_DFopen();
  113. int32 _DFgetelement(), _DFread(), _DFseek(), _DFwrite();
  114. uint16 _DFnewref();
  115. char *_DFIgetspace(), *_DFIfreespace(), *_DFIf2cstring();
  116. #endif VMS
  117.  
  118.  
  119. /*--------------------------------------------------------------------------*/
  120. /*                            Global Variables                                 */
  121.  
  122. #ifndef DFMASTER
  123. extern
  124. #endif DFMASTER
  125. int
  126.     DFerror;            /* Error code for DF routines */
  127.  
  128. /*--------------------------------------------------------------------------*/
  129. /*                             Tag Definitions                                */
  130.  
  131. #define DFREF_WILDCARD 0    /* wildcard ref for searches */
  132.  
  133. #define DFTAG_WILDCARD 0    /* wildcard tag for searches */
  134. #define    DFTAG_NULL    1        /* empty DD */
  135.  
  136.     /* utility set */
  137. #define DFTAG_FID    100        /* File identifier */
  138. #define    DFTAG_FD    101        /* File description */
  139. #define    DFTAG_TID    102        /* Tag identifier */
  140. #define    DFTAG_TD    103        /* Tag descriptor */
  141. #define DFTAG_DIL    104        /* data identifier label */
  142. #define DFTAG_DIA    105        /* data identifier annotation */
  143. #define DFTAG_NT    106        /* number type */
  144. #define DFTAG_MT    107        /* machine type */
  145.  
  146.     /* raster-8 set */
  147. #define DFTAG_ID8    200        /* 8-bit Image dimension */
  148. #define DFTAG_IP8    201        /* 8-bit Image palette */
  149. #define DFTAG_RI8    202        /* Raster-8 image */
  150. #define DFTAG_CI8    203        /* RLE compressed 8-bit image */
  151. #define DFTAG_II8    204        /* IMCOMP compressed 8-bit image */
  152.  
  153.     /* Raster Image set */
  154. #define DFTAG_ID    300        /* Image DimRec */
  155. #define DFTAG_LUT    301        /* Image Palette */
  156. #define    DFTAG_RI    302        /* Raster Image */
  157. #define    DFTAG_CI    303        /* Compressed Image */
  158.  
  159. #define DFTAG_RIG    306        /* Raster Image Group */
  160. #define DFTAG_LD    307        /* Palette DimRec */
  161. #define    DFTAG_MD    308        /* Matte DimRec */
  162. #define DFTAG_MA    309        /* Matte Data */
  163. #define DFTAG_CCN    310        /* color correction */
  164. #define DFTAG_CFM    311        /* color format */
  165. #define DFTAG_AR    312        /* aspect ratio */
  166.     
  167. #define    DFTAG_DRAW    400        /* Draw these images in sequence */
  168. #define    DFTAG_RUN    401        /* run this as a program/script */
  169.  
  170. #define DFTAG_XYP    500        /* x-y position */
  171. #define DFTAG_MTO    501        /* machine-type override */
  172.  
  173.     /* Tektronix */
  174. #define DFTAG_T14    602        /* TEK 4014 data */
  175. #define DFTAG_T105    603        /* TEK 4105 data */
  176.  
  177.     /* Scientific Data set */
  178. #define DFTAG_SDG    700        /* Scientific Data Group */
  179. #define DFTAG_SDD    701        /* Scientific Data DimRec */
  180. #define DFTAG_SD    702        /* Scientific Data */
  181. #define DFTAG_SDS    703        /* Scales */
  182. #define DFTAG_SDL    704        /* Labels */
  183. #define DFTAG_SDU    705        /* Units */
  184. #define DFTAG_SDF    706        /* Formats */
  185. #define DFTAG_SDM    707        /* Max/Min */
  186. #define DFTAG_SDC    708        /* Coord sys */
  187. #define DFTAG_SDT    709        /* Transpose */
  188.  
  189.     /* compression schemes */
  190. #define DFTAG_RLE    11        /* run length encoding */
  191. #define DFTAG_IMC    12        /* IMCOMP compression */
  192.  
  193. /*--------------------------------------------------------------------------*/
  194. /*                            Error Return Codes                                 */
  195.  
  196. #define    DFE_NOERROR        0    /* No error */
  197. #define    DFE_FNF            -1    /* File not found error */
  198. #define    DFE_DENIED        -2    /* Access to file denied */
  199. #define    DFE_ALROPEN        -3    /* File already open */
  200. #define    DFE_TOOMANY        -4    /* Too Many DF's or files open */
  201. #define DFE_BADNAME        -5    /* Bad file name on open */
  202. #define    DFE_BADACC        -6    /* Bad file access mode */
  203. #define DFE_BADOPEN        -7    /* Other open error */
  204. #define DFE_NOTOPEN        -8    /* File can't be closed 'cause it isn't open */
  205. #define DFE_CANTCLOSE    -9    /* fclose wouldn't work! */
  206. #define DFE_DFNULL        -10    /* DF is a null pointer */
  207. #define DFE_ILLTYPE        -11    /* DF has an illegal type: internal error */
  208. #define DFE_UNSUPPORTED    -12    /* Feature not currently supported */
  209. #define DFE_BADDDLIST    -13    /* The DD list is non-existent: internal error */
  210. #define DFE_NOTDFFILE    -14    /* This is not a DF file and it is not 0 length */
  211. #define DFE_SEEDTWICE    -15    /* The DD list already seeded: internal error */
  212. #define    DFE_NOSPACE        -16    /* Malloc failed */
  213. #define    DFE_NOSUCHTAG    -17    /* There is no such tag in the file: search failed*/
  214. #define DFE_READERROR    -18    /* There was a read error */
  215. #define DFE_WRITEERROR    -19    /* There was a write error */
  216. #define DFE_SEEKERROR    -20    /* There was a seek error */
  217. #define DFE_NOFREEDD    -21    /* There are no free DD's left: internal error */
  218. #define DFE_BADTAG        -22    /* illegal WILDCARD tag */
  219. #define DFE_BADREF        -23    /* illegal WILDCARD reference # */
  220. #define DFE_RDONLY        -24    /* The DF is read only */
  221. #define DFE_BADCALL        -25    /* Calls in wrong order */
  222. #define DFE_BADPTR        -26 /* NULL ptr argument */
  223. #define DFE_BADLEN        -27    /* negative len specified */
  224. #define DFE_BADSEEK        -28    /* Attempt to seek past end of element */
  225. #define DFE_NOMATCH        -29    /* No (more) DDs which match specified tag/ref */
  226. #define DFE_NOTINSET    -30    /* Warning: Set contained unknown tag: ignored */
  227. #define DFE_BADDIM        -31    /* negative or zero dimensions specified */
  228. #define DFE_BADOFFSET    -32    /* Illegal offset specified */
  229. #define DFE_BADSCHEME    -33    /* Unknown compression scheme specified */
  230. #define DFE_NODIM        -34    /* No dimension record associated with image */
  231. #define DFE_NOTENOUGH    -35    /* space provided insufficient for size of data */
  232. #define DFE_NOVALS        -36    /* Values not available */
  233. #define DFE_CORRUPT        -37    /* File is corrupted */
  234. #define DFE_BADCONV        -37    /* Don't know how to convert data type */
  235. #define DFE_BADFP        -38    /* The file contained an illegal floating point no*/
  236. #define DFE_NOREF        -39    /* no more reference numbers are available */
  237. #define DFE_BADDATATYPE    -40    /* unknown or unavailable data type specified */
  238. #define DFE_BADMCTYPE    -41    /* unknown or unavailable machine type specified */
  239. #define DFE_BADNUMTYPE    -42    /* unknown or unavailable number type specified */
  240. #define DFE_BADORDER    -43    /* unknown or illegal array order specified */
  241. #define DFE_NOTIMPL        -44    /* This feature not yet implemented */
  242.  
  243. /*--------------------------------------------------------------------------*/
  244. /*                            Logical Constants                                 */
  245.  
  246. #define DFACC_READ        1    /* Read Access */
  247. #define DFACC_WRITE        2    /* Write Access */
  248. #define DFACC_CREATE    4    /* force file to be created */
  249. #define DFACC_ALL        7    /* the logical and of all the above values */
  250.  
  251. #endif DFTAG_NULL
  252.